package duppentity.dto.account;

import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import constants.BuDefault;
import constants.OrderDefault;
import utils.JSONObjectUtils;
import utils.Utils;

import java.util.ArrayList;
import java.util.List;

/**
 * Description: 将dupp返回的数据重新进行封装
 * Author: pengpeng@djcars.cn
 * Date: 2019/11/15 14:38
 */

public class UserAccountDetailDtoUtil {
    public static List<UserAccountDetailDto> getUserAccountDetailDtoList(JsonObject data) {
        List<UserAccountDetailDto> userAccountDetailDtoList = null;
        if (data != null) {
            if (data.has("total")) {
                if (data.get("total").getAsInt() > 0) {
                    JsonArray list = data.getAsJsonArray("list");
                    if (list != null && list.size() > 0) {
                        userAccountDetailDtoList = new ArrayList<>();
                        for (Integer i = 0; i < list.size(); i++) {
                            JSONObject listOne = JSONObjectUtils.get(list, i);
                            UserAccountDetailDto userAccountDetailDto = convertUserAccountDetailDto(listOne, data);
                            userAccountDetailDtoList.add(userAccountDetailDto);
                        }
                    }
                }
            }
        }
        return userAccountDetailDtoList;
    }


    private static UserAccountDetailDto convertUserAccountDetailDto(JSONObject listOne, JsonObject data) {
        UserAccountDetailDto userAccountDetailDto = new UserAccountDetailDto();
        JSONObject userInfo = JSONObjectUtils.get(data, "user_info");
        userAccountDetailDto.action = listOne.getIntValue("action");

        userAccountDetailDto.id = listOne.getString("id");
        userAccountDetailDto.userId = listOne.getLongValue("userId");
        userAccountDetailDto.mobile = JSONObjectUtils.getString(userInfo, listOne.getString("userId"), "mobile");
        userAccountDetailDto.contentId = listOne.getString("contentId");
        userAccountDetailDto.actionTypeName = BuDefault.getResultName(userAccountDetailDto.action, BuDefault.nameType.actionType);
        userAccountDetailDto.amount = Utils.getStringPrice(listOne.getIntValue("amount"));
        userAccountDetailDto.balance = Utils.getStringPrice(listOne.getIntValue("balance"));
        String stationName = listOne.getString("stationName");
        if (!Utils.isNullOrEmpty(stationName)) {
            userAccountDetailDto.name = stationName + BuDefault.name.two;
        } else {
            userAccountDetailDto.name = BuDefault.name.one + userAccountDetailDto.amount;
        }
        userAccountDetailDto.payTradeNo = listOne.getString("payTradeNo");
        userAccountDetailDto.outTradeNo = listOne.getString("outTradeNo");
        userAccountDetailDto.createTime = listOne.getLongValue("createTime");
        userAccountDetailDto.payTypeName = OrderDefault.payTypeName.one;
        return userAccountDetailDto;
    }
}

